package com.oop.example.processing;

import com.oop.example.work.esport.Esp2PortEntryDisplay;
import com.oop.example.work.esport.Esp2PortHtmlParser;
import com.oop.example.work.esport.Esp2PortHtmlPreparer;
import com.oop.example.work.esport.Esp2PortHtmlReader;
import com.oop.example.work.esport.Esp2PortOnLoadMerger;
import com.oop.example.work.esport.Esp2PortUnloadProcessor;
import com.oop.example.work.esport.Esp2PortuTockenMap;

/**
 * Класс является фабрикой объектов для обработки словаря. Для инициализация
 * объектов используется файл настроек properties.xml
 *
 * @author -
 */
public class ProcessingFactory {

    public static final String READER = "reader.class";
    public static final String PREPARER = "preparer.class";
    public static final String PARSER = "parser.class";
    public static final String TOCKENMAP = "tockenmap.class";
    public static final String MERGER = "merger.class";
    public static final String UNLOADPROCESSOR = "unloadprocessor.class";

    /**
     * Возвращает объект для чтения словаря из файла
     *
     * @return
     */
    public Reader getReader() {
        Reader reader = new Esp2PortHtmlReader();
        return reader;
    }

    public Preparer getPreparer() {
        Preparer preparer = new Esp2PortHtmlPreparer();
        return preparer;
    }

    public Parser getParser() {
        Parser parser = new Esp2PortHtmlParser();
        return parser;
    }

    public TockenMap getTockenMap() {
        TockenMap map = new Esp2PortuTockenMap();
        return map;
    }

    public OnLoadMerger getOnLoadMerger() {
        OnLoadMerger merger = new Esp2PortOnLoadMerger();
        return merger;
    }

    public EntryDisplay getEntryDisplay() {
        EntryDisplay display = new Esp2PortEntryDisplay();
        return display;
    }

    public ExportTask getExportTask() {
        ExportTask task = new ExportTask();
        return task;
    }

    public UnloadProcessor getUnloadProcessor(){
        UnloadProcessor p = new Esp2PortUnloadProcessor();
        return p;
    }

}
    /*
     //Раскоментировать если понадобиться сохранять настройки
     private static final String PROP_FILE_NAME = "properties.xml";
     private Properties prop = new Properties();
     public ProcessingFactory() throws IOException {
     prop.loadFromXML(new FileInputStream(new File(PROP_FILE_NAME)));
     }
     public void setUp(String key, String value) throws FileNotFoundException, IOException{
     prop.setProperty(key, value);
     prop.storeToXML(new FileOutputStream(new File(PROP_FILE_NAME)), value);
     }
     public String get(String key){
     return prop.getProperty(key);
     }
     */